【Arduino学习笔记07】模拟信号的输入与输出 analogRead() analogWrite() map() constrain() 您所在的位置:网站首页 arduino uno 输出电压 【Arduino学习笔记07】模拟信号的输入与输出 analogRead() analogWrite() map() constrain()

【Arduino学习笔记07】模拟信号的输入与输出 analogRead() analogWrite() map() constrain()

#【Arduino学习笔记07】模拟信号的输入与输出 analogRead() analogWrite() map() constrain()| 来源: 网络整理| 查看: 265

模拟信号:Arduino中的模拟信号就是0v~5v的连续的电压值 数字信号:Arduino中的数字信号就是高电平(5V)或者低电平(0V),是两个离散的值

 

模拟信号->数字信号:ADC(模数转换器)

  ADC是用于将模拟信号转换为数字信号的电路。将输入的模拟信号通过ADC转换为数字信号,处理器才能对其进行处理。

  这里讲的模拟输入是指0~5v的电压值。在Arduino上,ADC具有10位分辨率,这意味着它可以通过1,024个数字表示模拟电压。相当于将连续的电压值0~5v映射到离散的数值0~1023。将0 ~ 5V的电压分成1024份(2^10),算出来约为4.882mV的测量精度。即:0~4.882mV之间的电压值映射到数字0,4.883mV~9.764mV之间的电压值映射到数字1......

 

  这里的转换关系如下:

  数字i对应的模拟电压区间为:

  

 

 

   如果用区间的中位数来代表数字i对应的模拟电压:

  

 

 

 

模拟输入:analogRead(pin)

                         - 用analogRead()读取到的输入值就是0~1023之间的数值

                         - pin = 0~5 / A0~A5

 

模拟输出:analogWrite(pin, outputVal)

                  - pin = 3,5,6,9,10,11(PWM引脚)

                  - outputVal的取值范围:0~255(对应0V~5V)

 

  这里的映射关系比较多,用一个图示说明一下:

  

 

 

 

  这种映射关系可以方便地借助map()函数实现:

 

map(value, fromLow, fromHigh, toLow, toHigh):

  - value : 要处理的数值,在这里就是指模拟输入端读的数值

       - fromLow, fromHigh : 输入的上下限

       - toLow, toHigh : 想要映射到的数值范围的上下限

       - 这里的fromLow和fromHigh,toLow和toHigh没有明确的大小关系。map函数做的只是得到一个把fromLow映射到toLow,fromHigh映射到toHigh的线性映射关系,不在乎toLow和toHigh哪个大哪个小。

       - 返回值:根据得到的线性映射关系将value映射到的那个值

      

  值得注意的是:map()函数并没有限制value的大小必须在fromLow和fromHigh之间,它只是根据得到的线性映射关系来输出一个相对应的值。因此使用map()的时候可能会借助constrain()函数来限制输出值的范围:

constrain(value, min, max) :

       - value < min : return min

       - value > max : return max

       - min



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有